iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0

要同時了解Glow如何在Amplify Shader(AS)中製作,這次就是載入此擴充,並利用目前於Shader Graph(SG)中調出Glow效果的經驗來看在不同的工具的體驗是否接近。同樣的,直接進入正題。

利用AS就不用在意Universal Render Pipeline,創空專案時用預設的即可,而放入AS後第一個印象是它很專業,且有不少的範例可以直接學習。但很快就碰到了開啓了編輯區後二側反的地方顯示了一大堆資訊,完全不知道這些是要做什麼的疑問,不過中間的節點編輯還算是明確。

依照使用SG的經驗,用了Fresnel、Color和Multiply節點,仿製出最原始的Glow效果。視覺化編輯器的體驗上會認為AS設計的比較好看,操作上不分軒輊,不過節點上的資訊量有些差異。

但套用後的呈現,發光效果相當的隱晦,不仔細看還真不知道它有上Glow效果。

仔細找了一下Color裡的HDR,把數值上調後再把Time節點加入,則可以再度有隨時間擺動的呈現。不過AS的Time參數有點不同,還沒有全安調到和SG一樣,所以它完全變暗時會產生不預期的走色。

把貼圖加上去後,整個看起來和SG非常的相似。

AS做出來的Shader需要在Editor中執行Play Mode後才會開始呈現時間所帶來的擺動,但又不需要每次都進入Play Mode才能看到,只要執行過一次即可。

和SG相比,就是怪怪的,難不成真的是Universal Render Pipeline和現有的Pipeline之間的差異性?還是燈光沒打好?和SG出來的呈現很不一樣。

數數理論

Shader裡最主要的就是四則運算,不過多數的情況下以加、乘為主。從數學函式的方向來說,每個運算都有它的公式做為基礎,但在調整Shader,特別是用視覺化工具調整時,多數情況下,會依其呈現的效果做定奪(雖然不一定符合數理公式)。

基本的四則運算,可從AS的文件裡看到應用。

Add(以下圖片板權為Amplify Creation所有,引用僅為說明參考)

Multiply (以下圖片板權為Amplify Creation所有,引用僅為說明參考)

而Glow Shader裡另一個最複雜的數學公式則為Fresnel

按照文章裡的解說,Fresnel可用以下二個函式進行計算

R(θ) = R0 + (1 - R0)(1 - cosθ)5

或是

R = max(0, min(1, bias + scale * (1.0 + I • N)power))

從這裡可以看出不論是SG或是AS提供的Fresnel節點已是複合節點,也就是說它裡面的複雜計算從外部來看並不需要理會太多,只要給予適當的參數即可。而從文章中也知道這個節點泛用性很高,不少效果都仰賴Fresnel計算,應該會在往後的學習中常用上。

現階段也只能先記錄這些複雜的公式,以潛規則的方式運用於Shader中,待學會了基本的Shader應用後再回過頭了解這裡面細緻的差異。

今日測試用的專案放罝在Git Repo中的shader-amplify-glow目錄裡。Amplify Shader是付費取得的擴充,故不放入,請自行購入後引用。


上一篇
學習Glow Shader
下一篇
來學習Dissolve Shader
系列文
探索Unity中的視覺化製作工具30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言